#include "implementacioninterprete.h"
#include "../interprete.h"
#include "parser.h"
#include <string>
#include <iostream>
#include "../Busquedas/Busquedas.h"

using std::string;
using std::cout;

using namespace std;

int testBusquedaAvanzada(){
	Buscador buscador;	
	ListaDocumentos* listaDocs = NULL;
	int i;
	string frase = "Propuesta curricular para el Profesorado en Informática";
	printf("Frase A encontrar: %s\n",frase.c_str());
	listaDocs = buscador.RealizarBusquedaAvanzada(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		printf("Doc: %d\n",listaDocs->at(i));
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//---------------------------------------------------------------------
	frase = "NO LA ENCUENTRA NI A PALOS";
	printf("Frase A encontrar: %s\n",frase.c_str());
	listaDocs = buscador.RealizarBusquedaAvanzada(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		printf("Doc: %d\n",listaDocs->at(i));
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//---------------------------------------------------------------------
	frase = "lo que obliga a un proceso de formación";
	printf("Frase A encontrar: %s\n",frase.c_str());
	listaDocs = buscador.RealizarBusquedaAvanzada(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		printf("Doc: %d\n",listaDocs->at(i));
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//---------------------------------------------------------------------
	frase = "Ataques de denegación de servicio en redes Wireless";
	printf("Frase A encontrar: %s\n",frase.c_str());
	listaDocs = buscador.RealizarBusquedaAvanzada(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		printf("Doc: %d\n",listaDocs->at(i));
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//---------------------------------------------------------------------
	frase = "Actualmente podemos encontrar varias";
	printf("Frase A encontrar: %s\n",frase.c_str());
	listaDocs = buscador.RealizarBusquedaAvanzada(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		printf("Doc: %d\n",listaDocs->at(i));
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//---------------------------------------------------------------------
	frase = "Disse que se for";
	printf("Frase A encontrar: %s\n",frase.c_str());
	listaDocs = buscador.RealizarBusquedaAvanzada(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		printf("Doc: %d\n",listaDocs->at(i));
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//---------------------------------------------------------------------
	frase = "Facultad de";
	printf("Frase A encontrar: %s\n",frase.c_str());
	listaDocs = buscador.RealizarBusquedaAvanzada(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		printf("Doc: %d\n",listaDocs->at(i));
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//---------------------------------------------------------------------
	frase = "en la";
	printf("Frase A encontrar: %s\n",frase.c_str());
	listaDocs = buscador.RealizarBusquedaAvanzada(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		printf("Doc: %d\n",listaDocs->at(i));
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
}

int testBusqueda(){
	Buscador buscador;	
	ListaDocumentos* listaDocs = NULL;
	int i;
	
	//----------------------------------------------------------------------
	string frase = "propuesta";
    printf("Frase A encontrar: %s\n",frase.c_str());
  	printf("debe salir en 3 docs =>ids 1,2,3\n");
	listaDocs = buscador.RealizarBusqueda(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		printf("Doc: %d\n",listaDocs->at(i));
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//----------------------------------------------------------------------
	frase = "propuesta & utilizado";
  	printf("Frase A encontrar: %s\n",frase.c_str());
  	printf("debe salir en 2 docs =>ids 1,2\n");
	listaDocs = buscador.RealizarBusqueda(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		printf("Doc: %d\n",listaDocs->at(i));
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//---------------------------------------------------------------------------
	frase = "propuesta & uruguay";
    printf("Frase A encontrar: %s\n",frase.c_str());
    printf("debe salir en 1 docs =>ids 3\n");
	listaDocs = buscador.RealizarBusqueda(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		printf("Doc: %d\n",listaDocs->at(i));
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//---------------------------------------------------------------------------
	frase = "talleres | mulher";
    printf("Frase A encontrar: %s\n",frase.c_str());
    printf("debe salir en 2 docs =>ids 1,5\n");
	listaDocs = buscador.RealizarBusqueda(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		printf("Doc: %d\n",listaDocs->at(i));
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//---------------------------------------------------------------------------
	frase = "(talleres | mulher) & coisa";
    printf("Frase A encontrar: %s\n",frase.c_str());
    printf("debe salir en 1 docs =>ids 5\n");
	listaDocs = buscador.RealizarBusqueda(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		int temp = listaDocs->at(i);
		printf("Doc: %d\n",temp);
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//---------------------------------------------------------------------------
	frase = "( talleres | mulher ) & (estrela & (perfectita | noMeEncuentroEnNingunLado ) ) ";
   	printf("Frase A encontrar: %s\n",frase.c_str());
   	printf("debe salir en 2 docs =>ids 1,5 \n");
	listaDocs = buscador.RealizarBusqueda(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		int temp = listaDocs->at(i);
		printf("Doc: %d\n",temp);
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//---------------------------------------------------------------------------
	frase = "(talleres & !minhas) ";
   	printf("Frase A encontrar: %s\n",frase.c_str());
   	printf("debe salir en 1 docs =>ids 1 \n");
	listaDocs = buscador.RealizarBusqueda(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		int temp = listaDocs->at(i);
		printf("Doc: %d\n",temp);
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//---------------------------------------------------------------------------
	frase = "!practicamente ";
   	printf("Frase A encontrar: %s\n",frase.c_str());
   	printf("debe salir en 4 docs =>ids 1,2,3,5 \n");
	listaDocs = buscador.RealizarBusqueda(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		int temp = listaDocs->at(i);
		printf("Doc: %d\n",temp);
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
	
	//---------------------------------------------------------------------------
	frase = "!cucucucucucucucu ";
   	printf("Frase A encontrar: %s\n",frase.c_str());
   	printf("debe salir en todos los docs =>ids 1,2,3,4,5 \n");
	listaDocs = buscador.RealizarBusqueda(frase);
	printf("Encontre los Docs\n");
	for(i=0;i<listaDocs->size();i++){
		int temp = listaDocs->at(i);
		printf("Doc: %d\n",temp);
	}
	if(listaDocs->size() == 0){
		printf("No encontre resultados\n");
	}
	if(listaDocs!=NULL){ delete(listaDocs); listaDocs=NULL;}
	printf("\n\n");
}
